/*
day166
2020.2.10
*/
#include<iostream>
#include<vector>
using  namespace std;

class Solution {
public:
    int maximalSquare(vector<vector<char>>& matrix) {
    	if(matrix.size()==0) return 0;
    	int res=0;
    	int m=matrix.size();
    	int n=matrix[0].size();
    	
    	for(int i=0;i<m;++i)
    	{
    		if(matrix[i][0]=='1')
    		{
				res=1;
    			break;
			}
		}
		for(int j=0;j<n;++j)
		{
			if(matrix[0][j]=='1')
			{
				res=1;
    			break;
			}
		}
 
        for(int i=1;i<m;++i)
        {
        	for(int j=1;j<n;++j)
        	{
        		if(matrix[i][j]!='0')
        		{
        			int a=matrix[i-1][j]-'0';
        			int b=matrix[i-1][j-1]-'0';
        			int c=matrix[i][j-1]-'0';
        			if(a==0||b==0||c==0)
        			{
        				res=res>1 ? res : 1;
        				matrix[i][j]='1';
					}
					else
					{
						a=a<b ? a : b;
						a=a<c ? a : c;
						a+=1;
						res=res>a ? res : a;
						matrix[i][j]=a+'0';
					}
				}
			}
		}
		return res*res;
    }
};

int main()
{
	return 0;
}
